/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.trandio.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.NamingException;
import org.trandio.hb.TbActividad;
import org.trandio.model.ActividadVO;
import org.trandio.util.ConexionDb;
import org.trandio.util.HibernateUtil;
import org.hibernate.Query;
import org.hibernate.Session;
/**
 *
 * @author root
 */
public class ActividadDAO1 implements ActividadInterface {
    @Override
    public void guardarActividad(ActividadVO actividadVO) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        String sqlAdiciona  ="INSERT INTO tb_actividad("+
                    "codigo, descripcion, id_sexo, id_grupo_quir, id_manual, es_insumo,"+
                    "rip_rn, rip_estancia, dos_vias, cruenta, id_tipo_registro, id_grupo_funcional,"+
                    "id_cum, habilitada, id_centrocosto, edad_inicio, edad_final)"+
                    "VALUES (?, ?, ?, ?, ?, ?,  ?, ?, ?, ?, ?, ?, ?,  ?, ?, ?,?)";
        
        PreparedStatement stmt = conn.prepareStatement(sqlAdiciona);
        int insumo = (actividadVO.isInsumo()==true)?1:0;
        int riprn = (actividadVO.isRiprn()==true)?1:0;
        int ripestancia = (actividadVO.isRipestancia()==true)?1:0;
        int doblevia = (actividadVO.isDoblevia()==true)?1:0;
        int cruenta = (actividadVO.isCruenta()==true)?1:0;
        int habilitada = (actividadVO.isHabilitada()==true)?1:0;
        stmt.setString(1,actividadVO.getCodigo());
        stmt.setString(2,actividadVO.getDescripcion());
        stmt.setInt(3,actividadVO.getSexo());
        stmt.setInt(4,actividadVO.getGrupoquir());
        //stmt.setInt(5,actividadVO.getManual());
        stmt.setInt(5,insumo);
        stmt.setInt(6,riprn);
        stmt.setInt(7,ripestancia);
        stmt.setInt(8,doblevia);
        stmt.setInt(9,cruenta);
        stmt.setInt(10,actividadVO.getTipo_registro());
        stmt.setInt(11,actividadVO.getGrupo_funcional());
        stmt.setInt(12,actividadVO.getIcum());
        stmt.setInt(13,habilitada);
        stmt.setInt(14,actividadVO.getCentro_costo());
        stmt.setString(15, String.valueOf(actividadVO.getEdadini())+actividadVO.getMedida1());
        stmt.setString(16, String.valueOf(actividadVO.getEdadfin())+actividadVO.getMedida2());
        stmt.setInt(17,actividadVO.getId_especialidad());
        
        stmt.execute();
	stmt.close();
        if (!conn.isClosed())
               conn.close();
    }

    @Override
    public List<ActividadVO> consultarActividad(ActividadVO actividadVO) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        List<ActividadVO> listActividadVO = new ArrayList<ActividadVO>();
        String condicion = "";
        if (actividadVO.getCodigo() == null) {
            actividadVO.setCodigo("");
        }
        if (actividadVO.getDescripcion() == null) {
            actividadVO.setDescripcion("");
        }

        if(!actividadVO.getCodigo().equals("")&&actividadVO.getDescripcion().equals("")){
            condicion = "WHERE tb_actividad.codigo='"+actividadVO.getCodigo()+"'";
        }else if(!actividadVO.getDescripcion().equals("")){
            condicion = "WHERE tb_actividad.descripcion LIKE '%"+actividadVO.getDescripcion()+"%'";
        }

        if(actividadVO.getGrupo_funcional()>0){
            System.out.println("Valida grupo ac");
            condicion = "WHERE tb_actividad.id_grupo_funcional="+actividadVO.getGrupo_funcional();
        }

        String sql = "SELECT tb_actividad.id, tb_actividad.codigo," +
                            "tb_actividad.descripcion, tb_actividad.id_sexo," +
                            "tb_actividad.id_grupo_quir," +
                            "tb_actividad.es_insumo,tb_actividad.rip_rn," +
                            "tb_actividad.rip_estancia, tb_actividad.dos_vias," +
                            "tb_actividad.cruenta,tb_actividad.id_tipo_registro," +
                            "tb_actividad.id_grupo_funcional,tb_actividad.grupo_qx," +
                            "tb_actividad.id_cum"+
                            " FROM tb_actividad " + condicion;
                            //"LEFT JOIN tb_manual ON (tb_actividad.id_manual = tb_manual.id) "+condicion;
       
        System.out.println("Sql buscar actividad codigo: "+sql);

        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    actividadVO.setId(res.getInt("id"));
                    actividadVO.setCodigo(res.getString("codigo"));
                    actividadVO.setDescripcion(res.getString("descripcion"));
                    //actividadVO.setDescmanual(res.getString("manual"));
                    listActividadVO.add(actividadVO);

                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed())
               conn.close();
        }

        return listActividadVO;

    }


    @Override
    public List<ActividadVO> consultarActividadAdm(String codigo, String descripcion) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        List<ActividadVO> listActividadVO = new ArrayList<ActividadVO>();
        String condicion = "";
        if(!codigo.equals("")&&descripcion.equals("")){
            condicion = "WHERE tb_actividad.codigo='"+codigo+"'";
        }else if(!descripcion.equals("")){
            condicion = "WHERE tb_actividad.descripcion LIKE '%"+descripcion+"%'";
        }

        /*
        if(actividadVO.getGrupo_funcional()>0){
            System.out.println("Valida grupo ac");
            condicion = "WHERE tb_actividad.id_grupo_funcional="+actividadVO.getGrupo_funcional();
        }
        */
        String sql = "SELECT tb_actividad.id, tb_actividad.codigo," +
                            "tb_actividad.descripcion, tb_actividad.id_sexo," +
                            "tb_actividad.id_grupo_quir, tb_actividad.id_manual," +
                            "tb_actividad.es_insumo,tb_actividad.rip_rn," +
                            "tb_actividad.rip_estancia, tb_actividad.dos_vias," +
                            "tb_actividad.cruenta,tb_actividad.id_tipo_registro," +
                            "tb_actividad.id_grupo_funcional,tb_actividad.grupo_qx," +
                            "tb_actividad.id_cum"+
                            " FROM tb_actividad " +  condicion+" limit 10";
                            //"LEFT JOIN tb_manual ON (tb_actividad.id_manual = tb_manual.id) "+condicion+" limit 10";

        System.out.println("Sql buscar actividad codigo: "+sql);

        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    ActividadVO actividadVO = new ActividadVO();
                    actividadVO.setId(res.getInt("id"));
                    actividadVO.setCodigo(res.getString("codigo"));
                    actividadVO.setDescripcion(res.getString("descripcion"));
                    //actividadVO.setDescmanual(res.getString("manual"));
                    listActividadVO.add(actividadVO);

                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed())
               conn.close();
        }

        return listActividadVO;

    }
    
    @Override
    public List<ActividadVO> consultarActividadBuscador(String codigo, String descripcion, String idcto) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<ActividadVO> listActividadVO = new ArrayList<ActividadVO>();

        String condicion = "";



        if(!codigo.equals("")&&descripcion.equals("")){
            condicion = "WHERE tb_actividad.codigo='"+codigo+"'";
        }else if(!descripcion.equals("")){
            condicion = "WHERE tb_actividad.descripcion LIKE '%"+descripcion+"%'";
        }



        String sql = "SELECT tb_actividad.id, tb_actividad.codigo," +
                            "tb_actividad.descripcion, tb_actividad.id_sexo," +
                            "tb_actividad.id_grupo_quir," +
                            "tb_actividad.es_insumo,tb_actividad.rip_rn," +
                            "tb_actividad.rip_estancia, tb_actividad.dos_vias," +
                            "tb_actividad.cruenta,tb_actividad.id_tipo_registro," +
                            "tb_actividad.id_grupo_funcional,tb_actividad.grupo_qx," +
                            "tb_actividad.id_cum"+
                            " FROM tb_actividad " +                            
                            "INNER JOIN tb_contrato_actividad ON (tb_actividad.id = tb_contrato_actividad.id_actividad) "
                            +condicion+ " AND tb_contrato_actividad.id_contrato="+idcto;
                            //"LEFT JOIN tb_manual ON (tb_actividad.id_manual = tb_manual.id) "
        System.out.println("Sql buscar actividad codigo: "+sql);

        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    ActividadVO actividadVO = new ActividadVO();
                    actividadVO.setId(res.getInt("id"));
                    actividadVO.setCodigo(res.getString("codigo"));
                    actividadVO.setDescripcion(res.getString("descripcion"));
                    actividadVO.setDescmanual(res.getString("manual"));
                    actividadVO.setGrupo_funcional(res.getInt("id_grupo_funcional"));
                    listActividadVO.add(actividadVO);

                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
           if (!conn.isClosed())
               conn.close();
        }

        return listActividadVO;

    }




    @Override
    public String borrarActividad(int id) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();       


        System.out.println("Id a eliminar:"+id);

        String sql = "delete from tb_actividad where tb_actividad.id=?";

        PreparedStatement stmt = conn.prepareStatement(sql);
        stmt.setInt(1, id);

        stmt.execute();
        stmt.close();

        return "okborrar";
    }

   // @Override
    @Override
    public List<ActividadVO> consultarActividades() {
        List<ActividadVO> listActividadVO = new ArrayList<ActividadVO>();
        try {
            ConexionDb con = new ConexionDb();
            Connection conn;
            conn = con.traerConexion();

             String inner = "";

            inner = "INNER JOIN tb_grupoactividad on (tb_actividad.id_grupo_funcional=tb_grupoactividad.id)";

            
            String sql = "SELECT tb_actividad.id, tb_actividad.codigo, tb_actividad.descripcion, id_sexo, id_grupo_quir, es_insumo," +
                    "rip_rn, rip_estancia, dos_vias, cruenta, id_tipo_registro, id_grupo_funcional,"
                    + "grupo_qx, id_cum,tb_grupoactividad.descripcion as descgrupo,habilitada" + " FROM tb_actividad "+inner;
            


/*
            String sql = "SELECT id, codigo, descripcion, id_sexo, id_grupo_quir, id_manual, es_insumo," +
                    "rip_rn, rip_estancia, dos_vias, cruenta, id_tipo_registro, id_grupo_funcional,"
                   +"grupo_qx, id_cum" + " FROM tb_actividad";
*/


            System.out.println("Sql buacar act: " + sql);
            PreparedStatement stmt = conn.prepareStatement(sql);

            try{
            ResultSet res = stmt.executeQuery();
            try{
            while (res.next()) {
                ActividadVO actividadVO = new ActividadVO();
                actividadVO.setId(res.getInt("id"));
                actividadVO.setCodigo(res.getString("codigo"));
                actividadVO.setDescripcion(res.getString("descripcion"));
                actividadVO.setGrupoActividad(res.getString("descgrupo"));
                listActividadVO.add(actividadVO);
            }
            }finally{
                res.close();
            }
            }
            finally{
            stmt.close();
            if (!conn.isClosed())
               conn.close();
            }

        } catch (NamingException ex) {
            Logger.getLogger(ActividadDAO1.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(ActividadDAO1.class.getName()).log(Level.SEVERE, null, ex);
        }
        return listActividadVO;
    }

    @Override
    public ActividadVO getActividad(int id) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        String sql = "SELECT id, codigo, descripcion, id_sexo, id_grupo_quir, es_insumo,"+
                            "rip_rn, rip_estancia, dos_vias, cruenta, id_tipo_registro, id_grupo_funcional,"+
                            "grupo_qx, id_cum,habilitada, id_centrocosto, edad_inicio, edad_final,id_especialidad"+
                            " FROM tb_actividad WHERE tb_actividad.id ="+id;

        System.out.println("Sql BUSCAR ACTIVIDAD POR ID: "+sql);

        PreparedStatement stmt = conn.prepareStatement(sql);
        ResultSet res = stmt.executeQuery();

        ActividadVO actividadVO = new ActividadVO();

        if (res.next()) {
                actividadVO.setId(res.getInt("id"));
                actividadVO.setCodigo(res.getString("codigo"));
                actividadVO.setDescripcion(res.getString("descripcion"));
                actividadVO.setSexo(res.getInt("id_sexo"));
                actividadVO.setGrupoquir(res.getInt("id_grupo_quir"));
                //actividadVO.setManual(res.getInt("id_manual"));
                actividadVO.setRiprn(res.getBoolean("rip_rn"));
                actividadVO.setInsumo(res.getBoolean("es_insumo"));
                actividadVO.setRipestancia(res.getBoolean("rip_estancia"));
                actividadVO.setDoblevia(res.getBoolean("dos_vias"));
                actividadVO.setTipo_registro(res.getInt("id_tipo_registro"));
                actividadVO.setGrupo_funcional(res.getInt("id_grupo_funcional"));
                actividadVO.setIcum(res.getInt("id_cum"));
                actividadVO.setHabilitada(res.getBoolean("habilitada"));
                actividadVO.setCentro_costo(res.getInt("id_centrocosto"));
                actividadVO.setId_especialidad(res.getInt("id_especialidad"));
                
                String ei = res.getString("edad_inicio");
                
                if(!(ei==null)){
                    int n1 = res.getString("edad_inicio").length();
                    int n2 = res.getString("edad_final").length();
                    actividadVO.setEdadini(Integer.parseInt(res.getString("edad_inicio").substring(0,n1-1)));
                    actividadVO.setMedida1(res.getString("edad_inicio").charAt(n1-1));

                    actividadVO.setEdadfin(Integer.parseInt(res.getString("edad_final").substring(0,n2-1)));
                    actividadVO.setMedida2(res.getString("edad_final").charAt(n1-1));
                }else{
                    actividadVO.setEdadini(0);
                    actividadVO.setMedida1('A');
                    actividadVO.setEdadfin(0);
                    actividadVO.setMedida2('A');
                }
                


            }

         res.close();
         stmt.close();
         if (!conn.isClosed())
               conn.close();
        return actividadVO;


    }

    @Override
    public void guardarActividadEdit(ActividadVO actividadVO) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        String sql ="UPDATE tb_actividad "+
                       "SET codigo=?, descripcion=?, id_sexo=?, id_grupo_quir=?,"+
                       "es_insumo=?, rip_rn=?, rip_estancia=?, dos_vias=?, cruenta=?,"+
                       "id_tipo_registro=?, id_grupo_funcional=?, id_cum=?, habilitada=?," +
                       "id_centrocosto = ?, edad_inicio=?, edad_final=?, id_especialidad=? "+
                       "WHERE tb_actividad.id="+actividadVO.getId();

                       System.out.println("SQL del Update="+sql);

		PreparedStatement stmt = conn.prepareStatement(sql);

                int insumo = (actividadVO.isInsumo()==true)?1:0;
                int riprn = (actividadVO.isRiprn()==true)?1:0;
                int ripestancia = (actividadVO.isRipestancia()==true)?1:0;
                int doblevia = (actividadVO.isDoblevia()==true)?1:0;
                int cruenta = (actividadVO.isCruenta()==true)?1:0;
                int habilitada = (actividadVO.isHabilitada()==true)?1:0;

                stmt.setString(1,actividadVO.getCodigo());
                stmt.setString(2,actividadVO.getDescripcion());
                stmt.setInt(3,actividadVO.getSexo());
                stmt.setInt(4,actividadVO.getGrupoquir());
                //stmt.setInt(5,actividadVO.getManual());
                stmt.setInt(5,insumo);
                stmt.setInt(6,riprn);
                stmt.setInt(7,ripestancia);
                stmt.setInt(8,doblevia);
                stmt.setInt(9,cruenta);
                stmt.setInt(10,actividadVO.getTipo_registro());
                stmt.setInt(11,actividadVO.getGrupo_funcional());
                stmt.setInt(12,actividadVO.getIcum());
                stmt.setInt(13,habilitada);
                stmt.setInt(14,actividadVO.getCentro_costo());
                stmt.setString(15, String.valueOf(actividadVO.getEdadini())+actividadVO.getMedida1());
                stmt.setString(16, String.valueOf(actividadVO.getEdadfin())+actividadVO.getMedida2());
                stmt.setInt(17,actividadVO.getId_especialidad());

		stmt.execute();
		stmt.close();
                if (!conn.isClosed())
               conn.close();
    }

    @Override
    public void eliminarActividad(ActividadVO actividadSeleccionada) throws SQLException, NamingException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public List<ActividadVO> consultarActividadBuscadorTarifas(String codigo, String descripcion, String manual) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        List<ActividadVO> listActividadVO = new ArrayList<ActividadVO>();
        String condicion = "";
        if(!codigo.equals("")&&descripcion.equals("")){
            condicion = "WHERE tb_actividad.codigo='"+codigo+"'";
        }else if(!descripcion.equals("")){
            condicion = "WHERE tb_actividad.descripcion LIKE '%"+descripcion+"%'";
        }

        String sql = "SELECT tb_actividad.id, tb_actividad.codigo," +
                            "tb_actividad.descripcion,tb_manual.descripcion manual," +
                            "tb_tarifa.valor"+
                            " FROM tb_tarifa " +
                            "INNER JOIN tb_actividad ON (tb_tarifa.id_actividad = tb_actividad.id)"+
                            "INNER JOIN tb_manual ON (tb_tarifa.id_manual = tb_manual.id) "+condicion+
                            " AND tb_manual.id = "+manual;

        System.out.println("Sql buscar actividad codigo: "+sql);
        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    ActividadVO actividadVO = new ActividadVO();
                    actividadVO.setId(res.getInt("id"));
                    actividadVO.setCodigo(res.getString("codigo"));
                    actividadVO.setDescripcion(res.getString("descripcion"));
                    actividadVO.setDescmanual(res.getString("manual"));
                    actividadVO.setValor(res.getFloat("valor"));
                    listActividadVO.add(actividadVO);

                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed())
               conn.close();
        }

        return listActividadVO;
    }

    @Override
    public float consultarTarifa(String manual, String idact, int grupoactividad) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        String mn=manual;
        switch (grupoactividad){
            case 9: mn="1"; break;
            case 12:mn="1";break;
            case 13:mn="1";break;
        }
        
        float valor = 0;

        String condicion = "";

        String sql = "SELECT tb_tarifa.valor"+
                            " FROM tb_tarifa " +
                            "WHERE tb_tarifa.id_actividad ="+idact+" AND tb_tarifa.id_manual = "+mn;

        System.out.println("Sql buscar actividad codigo: "+sql);

        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                if(res.next()) {
                  valor = res.getFloat("valor");
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed())
               conn.close();
        }

        return valor;
    }

    @Override
    public ActividadVO consultarActividad(String codact, String idcto) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        String condicion = "WHERE tb_actividad.codigo='"+codact+"'";

       /*String sql = "SELECT tb_actividad.id, tb_actividad.codigo," +
                            "tb_actividad.descripcion, tb_actividad.id_sexo," +
                            "tb_actividad.id_grupo_quir, tb_actividad.id_manual," +
                            "tb_actividad.es_insumo,tb_actividad.rip_rn," +
                            "tb_actividad.rip_estancia, tb_actividad.dos_vias," +
                            "tb_actividad.cruenta,tb_actividad.id_tipo_registro," +
                            "tb_actividad.id_grupo_funcional,tb_actividad.grupo_qx," +
                            "tb_actividad.id_cum,tb_manual.descripcion manual"+
                            " FROM tb_actividad " +
                            "LEFT JOIN tb_manual ON (tb_actividad.id_manual = tb_manual.id) "
                            +"INNER JOIN tb_contrato_actividad ON (tb_actividad.id = tb_contrato_actividad.id_actividad) "
                            +condicion+ "AND tb_actividad.habilitada='1' AND tb_contrato_actividad.id_contrato="+idcto;*/

        String sql = "SELECT tb_actividad.id, tb_actividad.codigo," +
                            "tb_actividad.descripcion, tb_actividad.id_sexo," +
                            "tb_actividad.id_grupo_quir, " +
                            "tb_actividad.es_insumo,tb_actividad.rip_rn," +
                            "tb_actividad.rip_estancia, tb_actividad.dos_vias," +
                            "tb_actividad.cruenta,tb_actividad.id_tipo_registro," +
                            "tb_actividad.id_grupo_funcional,tb_actividad.grupo_qx," +
                            "tb_actividad.id_cum"+
                            " FROM tb_actividad " +                          
                            "INNER JOIN tb_contrato_actividad ON (tb_actividad.id = tb_contrato_actividad.id_actividad) "
                            +condicion + 
                            "AND tb_actividad.habilitada='1' AND tb_actividad.id=tb_contrato_actividad.id_actividad "+
                            "AND tb_contrato_actividad.id_contrato="+idcto;

        System.out.println("Sql BUSCAR ACTIVIDAD POR CODIGO Y CONTRATO: "+sql);

        PreparedStatement stmt = conn.prepareStatement(sql);
        ResultSet res = stmt.executeQuery();

        ActividadVO actividadVO = new ActividadVO();

        if (res.next()) {
                actividadVO.setId(res.getInt("id"));
                actividadVO.setCodigo(res.getString("codigo"));                
                actividadVO.setDescripcion(res.getString("descripcion"));
                actividadVO.setSexo(res.getInt("id_sexo"));
                //actividadVO.setDescmanual(res.getString("manual"));
                actividadVO.setGrupo_funcional(res.getInt("id_grupo_funcional"));
                actividadVO.setTipo_registro(res.getInt("id_tipo_registro"));
               
                //actividadVO.setId_manual(res.getInt("id_manual"));
            }

         res.close();
         stmt.close();
         if (!conn.isClosed())
               conn.close();
        return actividadVO;
    }
    
    @Override
    public ActividadVO consultarActividad(String codact) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        String condicion = "WHERE tb_actividad.codigo='"+codact+"'";

       String sql = "SELECT tb_actividad.id, tb_actividad.codigo," +
                            "tb_actividad.descripcion, tb_actividad.id_sexo," +
                            "tb_actividad.id_grupo_quir, tb_actividad.id_manual," +
                            "tb_actividad.es_insumo,tb_actividad.rip_rn," +
                            "tb_actividad.rip_estancia, tb_actividad.dos_vias," +
                            "tb_actividad.cruenta,tb_actividad.id_tipo_registro," +
                            "tb_actividad.id_grupo_funcional,tb_actividad.grupo_qx," +
                            "tb_actividad.id_cum,tb_manual.descripcion manual"+
                            " FROM tb_actividad " +
                            "LEFT JOIN tb_manual ON (tb_actividad.id_manual = tb_manual.id) "
                            +condicion+ "AND tb_actividad.habilitada='1' ";

        System.out.println("Sql BUSCAR ACTIVIDAD POR ID: "+sql);

        PreparedStatement stmt = conn.prepareStatement(sql);
        ResultSet res = stmt.executeQuery();

        ActividadVO actividadVO = new ActividadVO();

        if (res.next()) {
                actividadVO.setId(res.getInt("id"));
                actividadVO.setCodigo(res.getString("codigo"));
                actividadVO.setDescripcion(res.getString("descripcion"));
                actividadVO.setDescmanual(res.getString("manual"));
                actividadVO.setGrupo_funcional(res.getInt("id_grupo_funcional"));
                actividadVO.setTipo_registro(res.getInt("id_tipo_registro"));
                actividadVO.setSexo(res.getInt("id_sexo"));
            }

         res.close();
         stmt.close();
         if (!conn.isClosed())
               conn.close();
        return actividadVO;
    }    
    
    
    @Override
    public List<ActividadVO> consultarActividadCodDes(String codigo, String descripcion) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<ActividadVO> listActividadVO = new ArrayList<ActividadVO>();

        String condicion = "";

        if (!codigo.equals("") && descripcion.equals("")) {
            condicion = "WHERE tb_actividad.codigo='" + codigo + "'";
        } else if (!descripcion.equals("")) {
            condicion = "WHERE tb_actividad.descripcion LIKE '%" + descripcion + "%'";
        }
        
        String sql = "SELECT tb_actividad.id, tb_actividad.codigo, tb_actividad.descripcion"                
                + " FROM tb_actividad " + condicion;

        System.out.println("Sql buscar actividad codigo: " + sql);

        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    ActividadVO actividadVO = new ActividadVO();
                    actividadVO.setId(res.getInt("id"));
                    actividadVO.setCodigo(res.getString("codigo"));
                    actividadVO.setDescripcion(res.getString("descripcion"));
                    listActividadVO.add(actividadVO);

                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listActividadVO;

    }

    @Override
    public boolean consultarActividadManual(String cod, int manual) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        boolean valido = false;

        String sql = "SELECT count(*)"+
                     " FROM tb_actividad"+
                     " WHERE tb_actividad.id_manual="+manual+" AND tb_actividad.codigo='"+cod+"'";


            System.out.println(sql);

            PreparedStatement stmt = conn.prepareStatement(sql);
            ResultSet res = stmt.executeQuery();

            if (res.next()) {
                if(res.getInt(1)==0){
                    valido = true;
                }
            }

            res.close();
            stmt.close();
            if (!conn.isClosed())
               conn.close();


        return valido;
    }

    @Override
    public int getCantActividades(String $sWhere) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        int count = 0;

        String sql = "SELECT count(*) FROM tb_actividad";

            PreparedStatement stmt = conn.prepareStatement(sql);

            try{
            ResultSet res = stmt.executeQuery();
            try{
            if (res.next()) {
                count = res.getInt(1);
            }
            }finally{
                res.close();
            }
            }finally{
                stmt.close();
                if (!conn.isClosed())
               conn.close();
            }

        return count;
    }

    @Override
    public List<ActividadVO> getActividades(int displayStart, int displayLength, String $sWhere, String orden) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

         List<ActividadVO> lista = new ArrayList<ActividadVO>();
         String condicion = "";

         if(!$sWhere.equals("")){
            //condicion = " WHERE tb_factura.numero LIKE '%"+param+"%' ";
             condicion = $sWhere;
         }



        String sql = "SELECT id, codigo, descripcion, id_sexo, id_grupo_quir, id_manual, es_insumo,"+
                            "rip_rn, rip_estancia, dos_vias, cruenta, id_tipo_registro, id_grupo_funcional,"+
                            "grupo_qx, id_cum,habilitada, id_centrocosto, edad_inicio, edad_final"+
                            " FROM tb_actividad "+condicion+" "+orden+" LIMIT "+displayLength+" OFFSET "+displayStart;

        System.out.println("Sql BUSCAR ACTIVIDAD POR ID: "+sql);


        PreparedStatement stmt = conn.prepareStatement(sql);


        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    ActividadVO objVO = new ActividadVO();
                    objVO.setId(res.getInt("id"));
                    objVO.setCodigo(res.getString("codigo"));
                    objVO.setDescripcion(res.getString("descripcion"));                    
                    lista.add(objVO);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
           if (!conn.isClosed())
               conn.close();
        }

        return lista;
    }

    Session session = null;
    
    @Override
    public List<ActividadVO>  traerConsultas(int contrato) throws SQLException, NamingException {
//       session = HibernateUtil.getSessionFactory().openSession();
//            List ret = new ArrayList<TbActividad>();        
//            Query q;
//            session.beginTransaction();
//            q = session.createQuery("from TbActividad where idTipoRegistro=?  order by codigo").setInteger(0, 2) ;
//            session.getTransaction().commit();
//            ret = q.list();
//            return ret;       
        
        
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<ActividadVO> listActividadVO = new ArrayList<ActividadVO>();

        String condicion = "";

        String sql =  "SELECT tb_actividad.id, "+
                    " tb_actividad.codigo, "+
                    " tb_actividad.descripcion, "+
                    " tb_contrato_actividad.valor "+
                    " FROM tb_actividad, "+
                    " tb_contrato_actividad "+ 
                    " WHERE tb_actividad.id = tb_contrato_actividad.id_actividad AND "+
                    " tb_contrato_actividad.id_contrato = "+contrato+" AND "+
                    " tb_actividad.id_tipo_registro = 2";
   
        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    ActividadVO actividadVO = new ActividadVO();
                    actividadVO.setId(res.getInt("id"));
                    actividadVO.setCodigo(res.getString("codigo"));
                    actividadVO.setDescripcion(res.getString("descripcion"));
                    actividadVO.setValor(res.getFloat("valor"));
                    listActividadVO.add(actividadVO);

                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed())
               conn.close();
        }

        return listActividadVO;
        
    }
  @Override
     public int consultarActividadDeRipRn(int idactividad) throws SQLException, NamingException{
     ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        int existern = 0;

        String sql = "SELECT tb_actividad.id"+
                     " FROM tb_actividad"+
                     " WHERE tb_actividad.id="+idactividad+" AND tb_actividad.rip_rn=1";


            System.out.println(sql);

            PreparedStatement stmt = conn.prepareStatement(sql);
            ResultSet res = stmt.executeQuery();

            if (res.next()) {
                if(res.getInt(1)==0){
                    existern = 1;
                }
            }

            res.close();
            stmt.close();
            if (!conn.isClosed())
               conn.close();


        return existern;

      
  }

   @Override
   public int consultarActividadCopago(int idcontrato, int idgrupoact, int idactividad) throws SQLException, NamingException{
   ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        int existecop = 0;
        String sql = " Select tb_actividad.id "+
                     " from "+ 
                     " tb_actividad "+ 
                     " inner join tb_grupoactividad_copago on "+ 
                     " (tb_actividad.id_grupo_funcional = tb_grupoactividad_copago.id_grupoactividad) "+
                     " where tb_grupoactividad_copago.id_contrato = "+idcontrato+" "+
                     " and tb_grupoactividad_copago.id_grupoactividad = "+idgrupoact+" "+
                     " and tb_actividad.id = "+idactividad;

            System.out.println(sql);
            PreparedStatement stmt = conn.prepareStatement(sql);
            ResultSet res = stmt.executeQuery();
            if (res.next()) {
                if(res.getInt(1)!=0){
                    existecop = 1;
                }
            }
            res.close();
            stmt.close();
            if (!conn.isClosed())
               conn.close();

        return existecop;
   }

  
  

}